<?php
declare (strict_types=1);

namespace app\model\adv;

use think\Model;
use crmeb\basic\BaseModel;
use crmeb\traits\ModelTrait;
use think\model\relation\BelongsTo;

/**
 * @property int $adv_id 广告位编号关联adv表
 * @property int $id
 * @property int $param_id 关联字段id
 * @property int $sort 排序
 * @property int $status 状态 1 启用 0 禁用
 * @property int $type 类型 0固定 1 指定列表 2商品详情 3 外部url
 * @property string $created_at
 * @property string $img 图片地址
 * @property string $title 标题
 * @property string $updated_at
 * @property string $url 点击跳转的url地址
 * @property-read \app\model\adv\Adv $adv
 */
class AdvList extends BaseModel
{
    /**
     * 数据表主键
     * @var string
     */
    protected $pk = 'id';

    /**
     * 模型名称
     * @var string
     */
    protected $name = 'advlist';

    use ModelTrait;

    protected $autoWriteTimestamp = 'datetime';
    protected $createTime = 'created_at';
    protected $updateTime = 'updated_at';

    /**
     * 图片地址
     * @param $img
     * @return mixed|string
     */
    public function getImgAttr($img)
    {
        if ($img) {
            if (strpos($img, env('oss.url')) !== false) {
                // 包含
                $arr = explode(env('oss.url'), $img);
                $img = env('oss.img_url') . $arr[1];
            }
        }
        return $img;
    }


    /**
     * @param $value
     * @param $data
     * @return array
     */
    public function getImgListAttr($value, $data): array
    {
        return [$data['img']];
    }

    /**
     * @param Model $query
     * @param $value
     */
    public function searchTitleAttr($query, $value)
    {
        if ($value) {
            $query->whereLike('title', "%$value%");
        }
    }

    /**
     * @param Model $query
     * @param $value
     */
    public function searchStatusAttr($query, $value)
    {
        if ($value && $value != '') {
            $query->where('status', $value);
        }
    }

    /**
     * @param Model $query
     * @param $value
     */
    public function searchTypeAttr($query, $value)
    {
        if ($value && $value != '') {
            $query->where('type', $value);
        }
    }

    /**
     * 广告位
     * @return BelongsTo
     */
    public function adv(): BelongsTo
    {
        return $this->belongsTo(Adv::class, 'adv_id', 'id');
    }
}
